package aphorism;

import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Random;

/**
 * Kümmert sich um die Liste der Schriftfamilien.
 *
 * @author Patrick Bauer
 * @version 1.0
 */
public class FontFamilySelect extends AbstractSelect {
    private ArrayList<String> fontFamilyList;

    /**
     * Befuellt die fontFamilyList mit Elementen, fuegt diese dann der Combobox hinzu
     * <br>
     * und setzt den ActionListener auf die eigene Instanz.
     */
    public FontFamilySelect() {
        this.fontFamilyList = new ArrayList<String>();

        this.fontFamilyList.add("Arial");
        this.fontFamilyList.add("Arial Black");
        this.fontFamilyList.add("Comic Sans MS");
        this.fontFamilyList.add("Times New Roman");
        this.fontFamilyList.add("Courier New");
        this.fontFamilyList.add("Impact");
        this.fontFamilyList.add("Zufall");

        for(String family: this.fontFamilyList) {
            this.addItem(family);
        }

        this.addActionListener(this);
    }

    /**
     * Setzt beim aendern der Combobox die gewaehlte Schriftfamilie als Schriftfamilie des StringPanels.
     * <br>
     * Wenn "Zufall" gewaehlt wurde, wird zufaellig eine aus der fontFamilyList gewaehlt.
     *
     * @param e uebergebenes Event der Combobox
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        FontFamilySelect box = (FontFamilySelect) e.getSource();
        String family = (String) box.getSelectedItem();
        
        if(this.getStringPanel() != null){
            if(family.compareTo("Zufall") == 0){
                Random random = new Random();
                family = this.fontFamilyList.get(random.nextInt(this.fontFamilyList.size()-1));
            }
            
            this.getStringPanel().setFontFamily(family);
            this.getStringPanel().repaint();
        }
    }


    /**
     * Setzt den ersten Eintrag der Combobox als Default-Parameter des StringPanels.
     */
    @Override
    protected void setDefaultOption() {
        if(this.getStringPanel() != null){
            String item = (String) this.getItemAt(0);
            this.getStringPanel().setFontFamily(item);
            this.getStringPanel().repaint();
        }
    }
    
}
